/**
* @file qocontrol.cpp
* @describe QoControl
* @author gaoyuelong
* @date 2022/05/07
*/

#include "qocontrol.h"
#include "common.h"
#include "qomodel.h"
#include "qouser.h"
#include <QJsonObject>


QoControl::QoControl(QObject *parent) : QObject(parent)
{
    m_pModel = new QoModel();
    connect(m_pModel, SIGNAL(signalRecvMsg(const QJsonObject &)),
            this, SLOT(slotRecvMsg(const QJsonObject &)));
}

void QoControl::login(const QString &strAccount, const QString &strPassword)
{
    QJsonObject jsonobj;

    jsonobj.insert("Qo", "QoQoQo");
    jsonobj.insert("MessageType", eLogin);
    jsonobj.insert("Account", strAccount);
    jsonobj.insert("Password", strPassword);

    //给model层发送消息
    m_pModel->sendMsg(jsonobj);

    //如果登录成功，记下当前用户的信息

//    QJsonArray jsonFriends = jsonRecvMsgObj["friends"].toArray();

//    for (auto jsonFriend : jsonFriends) {
//        QoUser qoUser;
//        QJsonObject jsonObj = QJsonDocument::fromJson(jsonFriend.toString().toUtf8()).object();
//        qoUser.setAccount(jsonObj["friendAccount"].toString());
//        qoUser.setNickName(jsonObj["friendNickName"].toString());
//        m_vecCurrentUserFriends.push_back(qoUser);
//    }

////    for (auto currentUserFriend : m_vecCurrentUserFriends)
////    {
////        qDebug() << currentUserFriend.getAccount();
////    }

//    if (jsonRecvMsgObj["state"] == eTrue) {
//        m_pCurrentUser->setNickName(jsonRecvMsgObj["NickName"].toString());
//        m_pCurrentUser->setAccount(strAccount);
//        return true;
//    }

    //return false;
}

void QoControl::reg(const QString &strNickName, const QString &strPassword)
{
    QJsonObject jsonobj;

    jsonobj.insert("Qo", "QoQoQo");
    jsonobj.insert("MessageType", eRegister);
    jsonobj.insert("NickName", strNickName);
    jsonobj.insert("Password", strPassword);

    m_pModel->sendMsg(jsonobj);

//    if (jsonRecvMsgObj["state"] == eTrue) {
//        return jsonRecvMsgObj["Account"].toString();
//    }

//    return "";
}
#include <QDebug>
void QoControl::slotRecvMsg(const QJsonObject &jsonRecvMsgObj)
{
    qDebug() << "slotRecvMsg";
    //处理model层的消息，通知view层
    if (jsonRecvMsgObj["state"] == eTrue) {
        switch (jsonRecvMsgObj["MessageType"].toInt()) {
        case eLoginAck:{
            emit signalLogin(eNoError, jsonRecvMsgObj);
        }break;
        case eRegisterAck:{
            qDebug() << "slotregisterack";
            qDebug() << jsonRecvMsgObj["Account"].toString();
            emit signalReg(jsonRecvMsgObj["Account"].toString());
            qDebug() << "slotregisterack emit";
        }break;
        }
    }
    return;
}
